const mongoose = require('mongoose');
var bcrypt = require('bcrypt');
var SALT_WORK_FSCTOR = 10; // 计算强度,越大破解越困难
const UserSchema = mongoose.Schema({
    avatar:{type: String ,default:"http://p9zybqbtm.bkt.clouddn.com/default.png"},
    time:{type:String,default:0},
    username : String,
    name: String,
    phone: String,
    password : String,
    radio: String,
    cname: String,
    //10 普通用户
    //20 组织机构
    //30 管理员
    role : {
      type:Number,
      default:10
    },
    //0 未组织认证
    //1 已组织认证
    checkO:{
      type:Number,
      default:0
    },
    renzheng:{
         status:{type:Number,default:0},//0未审核 1审核中 //2审核不通过 3//通过
         Zname:{type:String,default:''},
         number:{type:String,default:''},
         idcard:{type:String,default:'default.jpg'}
    },
    updateAt: {
      type: Date,
      default: Date.now()
    }
},{
  versionKey: false
});
//每次存入数据时都进行判断
UserSchema.pre('save', function (next) {
  var user = this;
  this.updateAt = Date.now();


   //密码 加盐
bcrypt.genSalt(SALT_WORK_FSCTOR, function (err, salt) {
  if (err) {
    return next(err);
  }

  bcrypt.hash(user.password, salt, function (err, hash) {
    if (err) {
      return next(err);
    }

    user.password = hash;
    next();
  });
});
});

UserSchema.methods ={
comparePassword: function(_password, cb){
  bcrypt.compare(_password, this.password, function (err, isMatch) {
    if (err) {
      return cb(err);
    }
    cb(null, isMatch);
  }) 
}
};  

UserSchema.statics = {
  fetch: function (cb) {
    return this
      .find({})
      .sort('meta.updateAt')
      .exec(cb);
  },
  findById: function (id, cb) {
    return this
      .findOne({_id: id})
      .exec(cb)
  }
};

module.exports = UserSchema;